package com.xbk.seckill.order.domain.service;

import com.xbk.seckill.order.domain.model.entity.SeckillOrder;

import java.util.List;

/**
 * 订单领域层接口
 *
 * @author xiexu
 * @date 2025/2/5 17:16
 */
public interface SeckillOrderDomainService {

    /**
     * 保存订单
     * 
     * @param seckillOrder 订单
     * @return 是否保存成功
     */
    boolean saveSeckillOrder(SeckillOrder seckillOrder);

    /**
     * 根据用户id获取订单列表
     * 
     * @param userId 用户id
     * @return 订单列表
     */
    List<SeckillOrder> getSeckillOrderByUserId(Long userId);

    /**
     * 根据商品id获取订单列表
     * 
     * @param goodsId 商品id
     * @return 订单列表
     */
    List<SeckillOrder> getSeckillOrderByGoodsId(Long goodsId);

    /**
     * 以userId作为分片键删除订单
     * 
     * @param orderId 订单id
     * @param userId  用户id
     */
    void deleteOrderShardingUserId(Long orderId, Long userId);

    /**
     * 以goodsId作为分片键删除订单
     * 
     * @param orderId 订单id
     * @param goodsId 商品id
     */
    void deleteOrderShardingGoodsId(Long orderId, Long goodsId);
}
